#include <bits/stdc++.h>
using namespace std;
long long t,n,m,l,vd;
int s[3005];
long long sum,num[3005],numz;
double kkkkk;
struct C
{
    int d,v,a;
}c[3005];
double jisuan(C x)
{
    int t=(vd-x.v)/x.a;
    double ans=x.v*t+0.5*x.a*t*t;
    return ans;
}
int main()
{
    freopen("detect.in","r",stdin);
    freopen("detect.out","w",stdout);
    cin>>t;
    for (int z=1;z<=t;z++)
    {
        cin>>n>>m>>l>>vd;
        for (int i=1;i<=n;i++)
        {
            cin>>c[i].d>>c[i].v>>c[i].a;
        }
        for (int i=1;i<=m;i++)
        {
            cin>>s[i];
        }
        for (int i=1;i<=n;i++)
        {
            if (c[i].a==0)
            {
                if (c[i].v>vd && c[i].d<=s[m])
                {
                    sum++;
                    num[m]=1;
                }
            }
            else
            {
                if (c[i].v<=vd && c[i].a<0)
                {
                    kkkkk=jisuan(c[i]);
                    if (kkkkk<=s[m]-c[i].d)
                    {
                        sum++;
                        if (c[i].a>0)
                        {
                            num[m]=1;
                        }
                        if (c[i].a<0)
                        {
                            for (int j=1;j<=m;j++)
                            {
                                if (s[j]>kkkkk)
                                {
                                    num[m]++;
                                    break;
                                }
                            }
                        }
                    }
                }
            }
        }
        for (int i=1;i<=m;i++)
        {
            if (num[i]!=0)
            {
                numz++;
            }
        }
        cout<<sum<<" "<<numz<<endl;
    }
    return 0;
}
